﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using KerriganDataContract;
using KerriganDataContract.OfficialTest;
using KerriganDataContract.Code;
using KerriganDataContract.Facture;
using KerriganDataContract.Session;
using KerriganDataContract.Person;
using KerriganDataContract.Customer;
using KerriganDataContract.Agency;

namespace KerriganInterface.IServiceClient
{
    [ServiceContract]
    public interface IAgencyService
    {

        #region CustomerService

        [OperationContract]
        CustomerDC GetCustomer(int id);

        [OperationContract]
        List<CustomerDC> GetAllCustomer();

        [OperationContract]
        Boolean AddCustomerFromUser(CustomerDC dc);

        [OperationContract]
        Boolean AddCustomerFromForum(string email, AgencyEmployeeDC employee);

        #endregion


        #region PersonService



        #endregion 


        [OperationContract]
        Boolean AddCodeToUser(CodeDC code);

        [OperationContract]
        Boolean AddExamToUser(int examid, int customerID);

        [OperationContract]
        Boolean AddSessionToUser(int idSession, int customerID);

        [OperationContract]
        void PayUserBill(int customerID, List<string> detailList, List<SessionToPayDC> sessionsToPay);

        [OperationContract]
        RecapFacturesDC GetRecapFacturesCustomer(int customerID);

        [OperationContract]
        CustomerInformationDC GetCustomerInformation(int customerID);

        [OperationContract]
        List<FactureDC> GetBillsByCustomerID(int customerID);

        [OperationContract]
        List<SessionDC> GetSessionsByCustomerID(int customerID);
        
        [OperationContract]
        List<FactureDC> GetAllFactures();

        [OperationContract]
        int GetAmountToPayByCustomerID(int customerID);

        [OperationContract]
        List<SessionByCustomer_Result> GetAllSessionsByCustomerAndOffer(int idCustomer, int idOffer, DateTime date);

        [OperationContract]
        List<OfficialTestDC> GetExamsByCustomerID(int customerID);

        [OperationContract]
        List<ExamsByCustomer_Result> GetAllExamsAgencyByCustomer(int customerId);

        [OperationContract]
        List<CodeDC> GetCodesByCustomerID(int customerID);

        [OperationContract]
        int DeleteCodeToCustomer(int idCode);

        [OperationContract]
        int DeleteExamToCustomer(int idExam, int Idcustomer);

        [OperationContract]
        int DeleteSessionToCustomer(int id, int idcustomer);

        [OperationContract]
        int DeleteCustomer(int id);

        [OperationContract]
        AgencyEmployeeDC checkLogin(string login, string password);

        [OperationContract]
        byte[] getFatcure(int id);


        


    }
}
